The technical field of this invention is servo control and more particularly control of print head position and velocity during printing.
Ink jet printing requires careful control of the print head speed during a printing pass across the paper. It is generally desirable to have a constant print head velocity during printing. This involves four phases of print head drive control. In a first phase the print head is held in position beyond the beginning of the print swath. In a second phase the print head is accelerated up to the desired print velocity. During the third phase the velocity is regulated to be constant during actual printing. In the fourth phase after passing the end of the print swath, the print head is decelerated to a stop. In order to increase the printer throughput, it is common to limit the print head carriage travel to less than the entire page width for lines that do not require printing across the entire page width. This could occur for text at the end of a paragraph. Following this deceleration, the controller returns to the first phase where it holds print head position.
FIG. 1 illustrates the print head control in accordance with the prior art. Print head control system 100 includes printer engine 110, interface circuits 120 and microprocessor controller 130. Printer engine 110 includes print head 101, drive motor 102, drive belt 103, pulley 104 and linear position encoder strip 105. Print head 101 includes the mechanisms for producing ink droplets for application to the page being printed. These mechanisms are conventional, not a part of this invention and will not be described in detail. Drive motor 102 receives drive signals vM1 and vM2 and moves belt 103 accordingly. Belt 103 is continuous and wraps around pulley 104. Print head 101 is attached to belt 103 and moves when belt 103 moves. Pulses from linear position encoder strip 105 are detected by a quadrature pulse encoder which generates two signals CH_A and CH_B which are 90xc2x0 out of phase. This position sensing system is known in the art, is not a part of this invention and will not be described in further detail.
Interface circuits 120 include quadrature pulse encoder (QEP) decoder/counter 121, digital to analog converter 123 and motor drive circuit 125. Quadrature pulse encoder decoder/counter 121 receives the two signals CH_A and CH_B and produces a counter value x indicative of the position of print head 101. The relative phase of the two signals CH_A and CH_B provide an indication of the direction of motion and the number of pulses indicates that amount of travel. Special purpose circuits to embody quadrature pulse encoder decoder/counter 121 are known in the art. A Hewlett-Packard HP-2020 decoder integrated circuit is widely used for this purpose. Digital to analog converter (DAC) 123 receives a digital current command signal icmd from microprocessor controller 130 and converts this into an analog signal driving motor drive circuit 125. Digital to analog converter 123 and motor drive circuit 125 operate to supply electrical power to motor 102 to achieve the desired motion of print head 101. Motor drive circuit 125 is constructed to be compatible with motor 102 to effect control of the position and velocity of print head 101.
Microprocessor controller 130 includes command generator (Cmd Gen) 131, summing junction 132, proportional-integral-derivative (PID) controller 133, velocity estimator 134 and mode switch 135. The name microprocessor controller implies that this function is embodied by a programmed microprocessor. Though illustrated as separate components, it is known in the art to embody the control illustrated in FIG. 1 via discrete equations performed by a programmed microprocessor. Microprocessor controller 130 receives the print head position signal x and produces a digital current command signal icmd for control of the position and velocity of print head 101. Command generator 131 generates a command signal r corresponding to the desired print head movement. This will be further described below. Summing junction 132 forms an error signal e between this command signal r and a feedback signal from QEP decoder/counter 121. This error signal e is subject to a proportional-integral-derivative controller 133. Proportional-integral-derivative control is well known in the art. Proportional-integral-derivative controller 133 calculates the sum of three terms from the error signal. A proportional term is proportional to the error signal e. An integral term is a time sum of the error signal e. Lastly, a derivative term is the rate of change of the error signal e. The sum of these three terms is the current command signal icmd.
Microprocessor controller 130 operates in two modes as selected by mode switch 135. In a velocity mode velocity estimator 134 forms a velocity estimate vest of the print head 101 velocity from the position signal x. Summing junction 132 subtracts this velocity estimate vest as selected by mode switch 134 from the command signal r. In a position mode, mode switch 135 selects the position signal x. Summing junction 132 subtracts the position signal x from the command signal r.
FIG. 2 illustrated the typical operation of prior art print head control system 100. The Y-axis of FIG. 2a is r, from command generator 131. The Y-axis of FIG. 2b is x, the print head position from QEP decoder/counter 121. FIGS. 2a and 2b have aligned X-axes in time t. During time interval t1 microprocessor controller 130 is in position mode and mode switch 135 selects position signal x from QEP decoder/counter 121. Command generator 131 generates command signal r corresponding to the desired print head position. For the sake of this example, assume that the desired position is near the leftmost limit of print head 101 travel beyond the printable portion of the page. Proportional-integral-derivative controller 133 produces a current command signal icmd which results in print head 101 reaching the commanded position. At that time the error signal e is zero and no further movement takes place.
During time interval t2 microprocessor controller 130 is in an acceleration phase. Mode switch 135 selects the velocity estimate vest from velocity estimator 134. Command generator 131 generates the command signal r corresponding to the desired velocity. As illustrated in FIG. 2a, the command signal r increases during time interval t2 corresponding to the desired acceleration. FIG. 2b shows a corresponding change in the position signal x. The rate of acceleration commanded during time interval t2 is selected to reach the desired velocity for printing when the edge of the printable area is reached.
During time interval t3 the printing takes place. Microprocessor controller 131 is in the velocity mode and commands a constant velocity. Proportional-integral-derivative controller 133 produces a current command signal icmd to achieve this desired constant velocity. FIG. 2b illustrates linear change in the position signal x with respect to time.
During time interval t4 microprocessor controller 130 is in a deceleration phase. Command generator 131 generates a command signal r corresponding to decreasing velocity, eventually reaching a zero velocity. In this example, this deceleration phase stops print head 101 at the end of the current print line. This is not necessarily the end of the printable part of the page. FIG. 2b shows slowing of the rate of change of the position signal x to zero at the end of time interval t4.
Time interval t5 is another hold position interval. Mode switch 135 selects the position signal x and command generator 131 produces the command signal r corresponding to the desires hold position. In this example the desired position during time interval t5 is at the far right, the opposite end of the range of travel of print head 101. Print head 101 is now in position for another printing pass in the opposite direction.
Another commanded print head movement takes place during time intervals t6, t7 and t8. For time interval t6 microprocessor controller 130 is in velocity mode and mode switch 135 selects the velocity estimate vest. Command generator 131 commands a linearly increasing velocity resulting in acceleration. The sign of the voltage command is negative indicating travel in the opposite direction than during time intervals t2, t3 and t4. During time interval t7 command generator 131 commands a constant return velocity for the printing pass. During time interval t8 command generator 131 commands a linearly decreasing velocity resulting in deceleration of print head 101. Finally, microprocessor controller 130 switches to position mode via mode switch 135 and commands a constant position during time interval t9.
Despite the wide use of the print controller technique of FIG. 1, there are numerous problems with this technique. Storing the desired velocity profile may require considerable memory. In the velocity mode the integrator term of the PID controller automatically calculates the steady state current required to achieve the desired slew rate. However, the PID controller requires time for the integrator term to settle to a steady state. This time must be added to the time required to achieve the desired printing velocity. As a consequence, each printing pass requires more time than necessary. This extra time decreased the achieved page print rate. The page print rate is one of the key user careabout with a printer. Another problem occurs with the position mode. In many printers, particularly those which have been used extensively, there is considerable static friction in the print head movement. If the print head does not stop at the desired location, then the integrator term of the PID controller will eventually generate a large enough drive to move the print head toward the desired location. However, once moving the friction is generally reduced from the high static friction value. The high integrator drive could fail to react quickly enough to avoid overshooting the desired location. Thus the print head would stop a another location different than the desired location. In some instances this causes continual hunting for the desired location with each step overshooting the target. Lastly, the command signal often differs markedly when switching between the velocity and position modes. This may generate large switching transients which can damage the system.
A print head motor control uses a desired function of print head position versus time and a measured print head position to form an error signal. The print head controller forms a motor drive from the sum of a first term corresponding to the square root of the absolute value of the error signal and a second term corresponding to a dead band signal having a predetermined slope if said error signal exceeds a predetermined value.
The first term preferably uses the following formula:
vi={square root over (|e|)}sign(e) 
where: v1 is the desired first term; e is the error signal; |e| is the absolute value of the error signal; and sign(e) is the sign of the error signal e, 1 if e is greater than zero and xe2x88x921 if e is less than zero. The second term preferably uses the following formula:
v2=max(0, |e|xe2x88x92Kdz)sign(e) 
where: v2 is the desired second term; max( ) is the maximum function returning the maximum of its arguments; and Kdz is a predetermined constant indicative of the size of the dead zone.
The desired function of print head position versus time may be formed by double integrating a desired function of print head acceleration versus time. This desired function of print head acceleration preferably includes: a stored acceleration value and a corresponding predetermined acceleration time for an acceleration segment; a calculated time for a constant velocity segment having zero acceleration; a stored deceleration value and a corresponding predetermined deceleration time for a deceleration segment; and a calculated time for a dwell segment having zero acceleration and zero velocity.
The print head motor control preferably also includes a velocity loop. The print head velocity is estimated from the measured print head position. This estimated print head velocity is subtracted from the sum 235. The resulting difference is scaled to form the motor drive. The velocity estimate preferably includes a low pass filter.
The print head motor control is preferably implemented using a microprocessor.